package cn.chen.算法.排序;

import java.util.Arrays;

/**
 * 冒泡排序
 * */
public class BubbleSort {

    public static void main(String[] args){

        int[] arr={5,1,2,3,4};

        System.out.println(Arrays.toString(arr));
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    /**
     *
     * @param a 该数组就是要进行排序的数组
     */
    public static void bubbleSort(int [] a){

        boolean flag=true; // 作为标志位，用来判断这一趟是否进行了交换
        for(int i=1;i<a.length;i++){  // 确定趟数的， 最坏n-1趟就可以了

            flag=true;  // 重置，进行判断这一趟是否交换
            for(int j=0;j<a.length-i;j++){  // 每一趟循环 长度n-i次，i是趟数

                if(a[j]>a[j+1]){

                    flag=false;
                    int temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
            if(flag)    // 判断这一趟，是否进行了交换，没有进行交换，就直接跳出循环，进行了交换就还是需要进行比较
                break;  // 直接跳出循环，因为上一趟没有进行交换，说明已经是正序的了。
        }
    }
}
